1
프로젝트 블루프린트: 러스트 기반 그렙 도구 만들기
AI034Lesson 12
00:00

러스트 세계에서 강력한 CLI 도구는 단일 스크립트가 아니라 철저히 계획된 프로젝트 블루프린트입니다. 예를 들어 그렙과 같은 도구를 만들기 위해 우리는 바이너리 크레이트라이브러리 크레이트의 노력을 나눕니다.

1. 커피 머신 비유

고급 커피 머신을 생각해 보세요. lib.rs 에는 물을 데우고 원두를 분쇄하는 내부 메커니즘—즉 '엔진 로직'—이 포함되어 있습니다. 반면, main.rs 은 사용자가 누르는 외부 버튼—즉 '인터페이스'입니다. 이들을 분리해 두면, 기술자는 실제 버튼(바이너리)을 매번 눌러야 하는 일 없이 히터(라이브러리)를 테스트할 수 있습니다.

2. 엔진의 기초 설계

우리는 $ cargo new minigrep으로 시작합니다. 이 명령은 main.rs를 생성하지만, 수동으로 src/lib.rs을 추가해야 합니다. 이러한 아키텍처적 분리는 우리의 핵심 검색 로직이 분리된 상태 CLI 파싱에서 분리되도록 해주며, 더 쉬운 테스트와 모듈성 구현을 가능하게 합니다.

바이너리 크레이트src/main.rs("시동")라이브러리 크레이트src/lib.rs("엔진")로직 호출

3. 테스트 가능한 모듈성

로직을 lib.rs로 옮김으로써, 러스트의 테스트 프레임워크를 활용해 통제된 환경에서 라이브러리 함수를 호출할 수 있습니다. 우리는 바이너리에서 use minigrep; 을 사용하여 엔진을 가져오면서 동시에 명령줄 파싱 로직을 격리시킬 수 있습니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>